Welcome to pandas!

6.6 行索引设置为列数据

前面是df.set_index()函数将列数据设置为行索引,现在要反向操作,将行索引设置为列数据,则可以使用df.reset_index()函数,在实际工作中经常会将列数据设置为行索引,做完数据处理完后再还原回来,结构如下:

df.reset_index(level=None,drop=False,inplace=False,col_level=0,col_fill=””)

level :指定要设置为列数据的行索引级别,参数类型可以是数字、字符串、元组或列表,

比如该参数设置为0表示将分层索引的第1层设置为列数据,也可以写行索引对应的标题名称, 如果要将多个索引层级设置为列数据,就可以将多个索引层级的标题写入列表,元组中,默认情况下将所有级别设置为列数据。

drop :是否删除行索引

inplce :是否就地修改

col_level :如果列具有多个级别(分层索引),则可以插到指定列层级,默认请况下,会插入到第1层中。

Col_fill :如果列有多个层级,则确定其他层级的命名方式,如果没有,则索引名称为该参数指定的值 。


import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.文件导入分层索引设置.xlsx",sheet_name="工资表1" ,

header=[ 0,1 ], index_col =[ 0,1,2 ])

print (df)

df=df.reset_index([ "姓名","部门" ], col_level = 1 ) #把姓名和部门放到第二层

print (df)

返回:

季度 1季度 2季度
月份 1月 2月 3月 4月 5月 6月
部门 工号 姓名
销售部 NED1 张三 11453 12800 13023 11485 12345 11567
NED2 李四 12456 11234 12768 13876 12742 13643
财务部 NED3 王麻子 12675 11746 127314 11907 14238 11564
NED4 小曾 14643 11033 12857 13956 11963 12087

季度 1季度 2季度
月份 部门 姓名 1月 2月 3月 4月 5月 6月
工号
NED1 销售部 张三 11453 12800 13023 11485 12345 11567
NED2 销售部 李四 12456 11234 12768 13876 12742 13643
NED3 财务部 王麻子 12675 11746 127314 11907 14238 11564
NED4 财务部 小曾 14643 11033 12857 13956 11963 12087